// 给定浮点数x和整数n，计算x的n次方

// 思路：利用分支思想和二进制表示，假如n为13，则可以表示为x ^ 8 * x ^ 4 * x
// 时间复杂度：O(logn)
// 空间复杂度：O(1)
function myPow(x, n) {
    if (x === 0) {
        return 0
    }
    if (n < 0) {
      x = 1 / x
      n = -n  
    }
    let res = 1
    while (n) {
        //判断n的二进制最后一位是否是1， 如果是1则将结果乘以x
        if (n & 1) {
            res *= x
        }
        x *= x
        n >>>= 1
    }
    return res
}
console.log(myPow(3, -2));
console.log(myPow(3, 2));